# create_channel_test.py
import asyncio
import json
import logging
import os
from khl import Bot, ChannelTypes, api

logging.basicConfig(level=logging.INFO, format='[%(asctime)s] %(levelname)s %(name)s: %(%(levelno)s)s: %(message)s') # 修改日志格式，显示levelname
log = logging.getLogger('ChannelTest')

# ---------- 配置 ----------
CFG = json.load(open(os.path.join(os.path.dirname(__file__), 'config.json'), 'r', encoding='utf-8'))

# 请将此替换为你真实的服务器 ID（复制自 Kook 客户端，右键服务器图标）
# 示例：GUILD_ID = "9966554785285345"
GUILD_ID = "9966554785285345" # <-- 【重要】请在这里填入你复制的真实服务器ID

async def test_create_channel():
    bot = Bot(token=CFG['bot_token'])
    log.info(f"尝试在服务器 {GUILD_ID} 的分类 {CFG['parent_category_id']} 下创建测试频道...")
    try:
        new_ch = await bot.client.gate.exec_req(
            api.Channel.create(
                guild_id=GUILD_ID, # 明确指定服务器ID
                name="ticket-test-channel",
                parent_id=CFG['parent_category_id'],
                type=ChannelTypes.TEXT,
                private=True,
                # 这里暂时不设置复杂的权限，只测试最基本的创建
            )
        )
        log.info(f"频道创建成功！新频道ID: {new_ch['id']}, API响应: {new_ch}")
        # 如果成功，可以考虑删除它
        log.info("频道将在 5 秒后删除...")
        await asyncio.sleep(5)
        await bot.client.gate.exec_req(api.Channel.delete(channel_id=new_ch['id']))
        log.info("测试频道已删除。")
    except Exception as e:
        log.error(f"创建频道失败: {e}")
        # pass  # 删除 pass，让异常被报告
    finally:
        # 显式关闭 bot 的资源
        await bot.terminate() # 使用 terminate() 方法
        log.info("Bot资源已显式关闭。")

if __name__ == '__main__':
    asyncio.run(test_create_channel())
